package oficinaDeAlumnos;

import excepciones.ElProfesorNoDaLaMateriaException;
import alumno.AlumnoEnCarrera;
import docente.Docente;
import sistemaDeLaCarrera.Materia;



public class Equivalencia {
	int id;	
	//La materia original no es una instacia de la clase Materia
	//porque al ser una equivalencia originaria de otra casa de
	//estudios NO esta en el sistema. Las equivalencias locales,
	//es decir las que se dan entre carreras de la universidad
	//se realizan automaticamente.
	String descripcionMateriaOriginal;
	Materia materia;
	AlumnoEnCarrera alumnoEnCarrera;
	Docente profesor;
	EstadoEquivalencia estado;
	
	public enum EstadoEquivalencia{
		ENPROCESO, APROBADO, RECHAZADO
	}
	
	public Equivalencia(int id,AlumnoEnCarrera alumnoEnCarrera,Materia materia,String descripcion) {
		this.id = id;		
		this.alumnoEnCarrera = alumnoEnCarrera;
		this.materia = materia;
		this.descripcionMateriaOriginal = descripcion;
		this.estado = EstadoEquivalencia.ENPROCESO;
	}
	
	//GETTERS AND SETTERS
	public int getId() {
		return id;
	}
	
	public AlumnoEnCarrera getAlumnoEnCarrera() {
		return alumnoEnCarrera;
	}
	
	public Materia getMateria() {
		return materia;
	}

	public void setEstado(EstadoEquivalencia estado) {
		this.estado = estado;
	}	

	public String getDescripcionMateriaOriginal() {
		return descripcionMateriaOriginal;
	}
	
	//COMPORTAMIENTO
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Equivalencia){
			Equivalencia equivalencia = (Equivalencia)obj;
			return equivalencia.getId() == this.id;		
		}
		else
			return false;
	}
	
	/**
	 * Setea un profesor a la equivalencia
	 * @param profesor
	 * @throws ElProfesorNoDaLaMateriaException
	 */
	public void setProfesor(Docente profesor) throws ElProfesorNoDaLaMateriaException {
		if(profesor.getNombreDeMateriasQueDa().contains(materia))
			this.profesor = profesor;
		else
			throw new ElProfesorNoDaLaMateriaException();
		
	}



	
	
	

	
	
	

}
